// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package org.achartengine.chart;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.GradientDrawable;
import java.util.List;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
// Referenced classes of package org.achartengine.chart:
// XYChart, ClickableArea
public class BarChart extends XYChart
{
public static final String TYPE = "Bar";
private static final int a = 12;
protected Type mType;
BarChart()
{
mType = Type.DEFAULT;
}
BarChart(Type type)
{
mType = Type.DEFAULT;
mType = type;
}
public BarChart(XYMultipleSeriesDataset xymultipleseriesdataset, XYMultipleSeriesRenderer xymultipleseriesrenderer, Type type)
{
super(xymultipleseriesdataset, xymultipleseriesrenderer);
mType = Type.DEFAULT;
mType = type;
}
private int a(int i, int j, float f)
{
return Color.argb(Math.round(f * (float)Color.alpha(i) + (1.0F - f) * (float)Color.alpha(j)), Math.round(f * (float)Color.red(i) + (1.0F - f) * (float)Color.red(j)), Math.round(f * (float)Color.green(i) + (1.0F - f) * (float)Color.green(j)), Math.round(f * (float)Color.blue(i) + (1.0F - f) * (float)Color.blue(j)));
}
private void a(Canvas canvas, float f, float f1, float f2, float f3, int i, int j,
Paint paint)
{
SimpleSeriesRenderer simpleseriesrenderer = mRenderer.getSeriesRendererAt(j);
if (simpleseriesrenderer.isGradientEnabled())
{
double ad[] = new double[2];
ad[0] = 0.0D;
ad[1] = simpleseriesrenderer.getGradientStopValue();
float f4 = (float)toScreenPoint(ad, i)[1];
double ad1[] = new double[2];
ad1[0] = 0.0D;
ad1[1] = simpleseriesrenderer.getGradientStartValue();
float f5 = (float)toScreenPoint(ad1, i)[1];
float f6 = Math.max(f4, Math.min(f1, f3));
float f7 = Math.min(f5, Math.max(f1, f3));
int k = simpleseriesrenderer.getGradientStopColor();
int l = simpleseriesrenderer.getGradientStartColor();
int i1;
int j1;
GradientDrawable gradientdrawable;
if (f1 < f4)
{
paint.setColor(k);
canvas.drawRect(Math.round(f), Math.round(f1), Math.round(f2), Math.round(f6), paint);
i1 = k;
} else
{
i1 = a(k, l, (f5 - f6) / (f5 - f4));
}
if (f3 > f5)
{
paint.setColor(l);
canvas.drawRect(Math.round(f), Math.round(f7), Math.round(f2), Math.round(f3), paint);
j1 = l;
} else
{
j1 = a(l, k, (f7 - f4) / (f5 - f4));
}
gradientdrawable = new GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.BOTTOM_TOP, new int[] {
j1, i1
});
gradientdrawable.setBounds(Math.round(f), Math.round(f6), Math.round(f2), Math.round(f7));
gradientdrawable.draw(canvas);
return;
}
if (Math.abs(f1 - f3) < 1.0F)
{
if (f1 < f3)
{
f3 = f1 + 1.0F;
} else
{
f3 = f1 - 1.0F;
}
}
canvas.drawRect(Math.round(f), Math.round(f1), Math.round(f2), Math.round(f3), paint);
}
protected ClickableArea[] clickableAreasForPoints(List list, List list1, float f, int i, int j)
{
int k = mDataset.getSeriesCount();
int l = list.size();
ClickableArea aclickablearea[] = new ClickableArea[l / 2];
float f1 = getHalfDiffX(list, l, k);
int i1 = 0;
while (i1 < l)
{
float f2 = ((Float)list.get(i1)).floatValue();
float f3 = ((Float)list.get(i1 + 1)).floatValue();
if (mType == Type.STACKED)
{
aclickablearea[i1 / 2] = new ClickableArea(new RectF(f2 - f1, Math.min(f3, f), f2 + f1, Math.max(f3, f)), ((Double)list1.get(i1)).doubleValue(), ((Double)list1.get(i1 + 1)).doubleValue());
} else
{
float f4 = (f2 - f1 * (float)k) + f1 * (float)(i * 2);
aclickablearea[i1 / 2] = new ClickableArea(new RectF(f4, Math.min(f3, f), f4 + 2.0F * f1, Math.max(f3, f)), ((Double)list1.get(i1)).doubleValue(), ((Double)list1.get(i1 + 1)).doubleValue());
}
i1 += 2;
}
return aclickablearea;
}
protected void drawBar(Canvas canvas, float f, float f1, float f2, float f3, float f4, int i,
int j, Paint paint)
{
int k = mDataset.getSeriesAt(j).getScaleNumber();
if (mType == Type.STACKED)
{
a(canvas, f - f4, f3, f2 + f4, f1, k, j, paint);
return;
} else
{
float f5 = (f - f4 * (float)i) + f4 * (float)(j * 2);
a(canvas, f5, f3, f5 + 2.0F * f4, f1, k, j, paint);
return;
}
}
protected void drawChartValuesText(Canvas canvas, XYSeries xyseries, SimpleSeriesRenderer simpleseriesrenderer, Paint paint, List list, int i, int j)
{
int k = mDataset.getSeriesCount();
int l = list.size();
float f = getHalfDiffX(list, l, k);
int i1 = 0;
while (i1 < l)
{
double d = xyseries.getY(j + i1 / 2);
if (!isNullValue(d))
{
float f1 = ((Float)list.get(i1)).floatValue();
if (mType == Type.DEFAULT)
{
f1 += f * (float)(i * 2) - f * ((float)k - 1.5F);
}
if (d >= 0.0D)
{
drawText(canvas, getLabel(simpleseriesrenderer.getChartValuesFormat(), d), f1, ((Float)list.get(i1 + 1)).floatValue() - simpleseriesrenderer.getChartValuesSpacing(), paint, 0.0F);
} else
{
drawText(canvas, getLabel(simpleseriesrenderer.getChartValuesFormat(), d), f1, (((Float)list.get(i1 + 1)).floatValue() + simpleseriesrenderer.getChartValuesTextSize() + simpleseriesrenderer.getChartValuesSpacing()) - 3F, paint, 0.0F);
}
}
i1 += 2;
}
}
public void drawLegendShape(Canvas canvas, SimpleSeriesRenderer simpleseriesrenderer, float f, float f1, int i, Paint paint)
{
canvas.drawRect(f, f1 - 6F, f + 12F, f1 + 6F, paint);
}
public void drawSeries(Canvas canvas, Paint paint, List list, SimpleSeriesRenderer simpleseriesrenderer, float f, int i, int j)
{
int k = mDataset.getSeriesCount();
int l = list.size();
paint.setColor(simpleseriesrenderer.getColor());
paint.setStyle(android.graphics.Paint.Style.FILL);
float f1 = getHalfDiffX(list, l, k);
for (int i1 = 0; i1 < l; i1 += 2)
{
float f2 = ((Float)list.get(i1)).floatValue();
drawBar(canvas, f2, f, f2, ((Float)list.get(i1 + 1)).floatValue(), f1, k, i, paint);
}
paint.setColor(simpleseriesrenderer.getColor());
}
public String getChartType()
{
return "Bar";
}
protected float getCoeficient()
{
return 1.0F;
}
public double getDefaultMinimum()
{
return 0.0D;
}
protected float getHalfDiffX(List list, int i, int j)
{
float f = mRenderer.getBarWidth();
if (f > 0.0F)
{
return f / 2.0F;
}
int k;
float f1;
if (i > 2)
{
k = i - 2;
} else
{
k = i;
}
f1 = (((Float)list.get(i - 2)).floatValue() - ((Float)list.get(0)).floatValue()) / (float)k;
if (f1 == 0.0F)
{
f1 = 10F;
}
if (mType != Type.STACKED)
{
f1 /= j;
}
return (float)((double)f1 / ((double)getCoeficient() * (1.0D + mRenderer.getBarSpacing())));
}
public int getLegendShapeWidth(int i)
{
return 12;
}
protected boolean isRenderNullValues()
{
return true;
}
private class Type extends Enum
{
public static final Type DEFAULT;
public static final Type STACKED;
private static final Type a[];
public static Type valueOf(String s)
{
return (Type)Enum.valueOf(org/achartengine/chart/BarChart$Type, s);
}
public static Type[] values()
{
return (Type[])a.clone();
}
static
{
DEFAULT = new Type("DEFAULT", 0);
STACKED = new Type("STACKED", 1);
Type atype[] = new Type[2];
atype[0] = DEFAULT;
atype[1] = STACKED;
a = atype;
}
private Type(String s, int i)
{
super(s, i);
}
}
}